import java.util.Scanner;

public class demo {


    //    查找输入整数二进制中1的个数
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int count = 0;
            while(n != 0) {
                if((n & 1) == 1) {
                    count++;
                }
                n = n >> 1;
            }
            System.out.println(count);
        }
    }






    //    手套
//    在地下室里放着n种颜色的手套，手套分左右手，但是每种颜色的左右手手套个数不一定相同。A先生现在要出门，所以他要去地下室选手套。
//    但是昏暗的灯光让他无法分辨手套的颜色，只能分辨出左右手。所以他会多拿一些手套，然后选出一双颜色相同的左右手手套。现在的问题是，
//    他至少要拿多少只手套(左手加右手)，才能保证一定能选出一双颜色相同的手套。
//      给定颜色种数n(1≤n≤13),同时给定两个长度为n的数组left,right,分别代表每种颜色左右手手套的数量。
//      数据保证左右的手套总数均不超过26，且一定存在至少一种合法方案。
//    4,[0,7,1,6],[1,5,0,6]
//    返回：10(解释：可以左手手套取2只，右手手套取8只)
    public int findMinimum(int n, int[] left, int[] right) {
        //当只有一边手套有该种颜色时  eg: 左手3红 右手0红
//        将单独只有一边出现的颜色 通过循环保存的sum中   留下的都是颜色能够配对的手套
        int sum = 0;
//        能够配对的左手套的总个数
        int leftSum = 0;
//        能够配对的右手套的总个数
        int rightSum = 0;
//        能够配对的左手套当个颜色最少的个数
        int leftMin = Integer.MAX_VALUE;
//        能够配对的右手套当个颜色最少的个数
        int rightMin = Integer.MAX_VALUE;
//        因为 我们已经把不能匹配的用sum保存起来了  就是从能匹配的剔除掉了
//        要想一定能匹配到 可以左边手套每种至少有一只,右边任意取一只就可以匹配到了
//        所以最坏情况 s=左边手套总数-左边手套单颜色最少的个数+1   这样 每种颜色手套至少都有一种
//        右边同理  然后作比较 看我们是从左边还是右边手套各至拿一种   看那边s小 就再哪边拿  另一边拿一只
        for(int i = 0; i < n; i++) {
            if(left[i] * right[i] == 0) {
                sum = sum + left[i] + right[i];
            }else {

                leftSum += left[i];
                if(leftMin > left[i]) {
                    leftMin = left[i];
                }
                rightSum += right[i];
                if(rightMin > right[i]) {
                    rightMin = right[i];
                }

            }
        }
        return sum + Math.min(leftSum-leftMin+1, rightSum-rightMin+1)+1;
    }
}
